package com.devilvan.betrice.europeacademy.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.devilvan.betrice.europeacademy.entity.FindAllAvatarEntity;
import com.devilvan.betrice.europeacademy.po.EuropeAcademyHeaderPo;
import com.devilvan.betrice.export.pojo.EasyexcelWriteDto;
import com.devilvan.betrice.common.BetriceResultVo;

import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * @author Evad.Wu
 * @Description 欧洲学术成员 基本信息 业务逻辑接口
 * @date 2022-09-06
 */
@SuppressWarnings(value = "unused")
public interface EuropeAcademyHeaderService {
    /**
     * 采集欧洲学术各个成员的明细页面
     *
     * @param url 采集的URL
     * @return 形式返回
     */
    CompletableFuture<BetriceResultVo<EuropeAcademyHeaderPo>> doEuropeAcademy(String url);

    /**
     * 保存欧洲学术成员基本信息
     *
     * @param list 待保存的对象集合
     * @return 保存回调对象
     */
    EuropeAcademyHeaderPo saveUpdate(EuropeAcademyHeaderPo list);

    /**
     * 保存欧洲学术成员基本信息
     *
     * @param list 待保存的对象集合
     * @return 保存回调对象
     */
    List<EuropeAcademyHeaderPo> saveUpdateBatch(List<EuropeAcademyHeaderPo> list);

    /**
     * 判断该成员是否存在
     *
     * @param membershipId 成员编号
     * @return 是/否
     */
    boolean isMembershipExists(Long membershipId);

    /**
     * 删除该成员的数据
     *
     * @param membershipId 成员编号
     */
    void deleteByMembershipId(Long membershipId);

    /**
     * 根据成员ID查询header
     *
     * @param membershipId 成员ID
     * @return 结果集
     */
    EuropeAcademyHeaderPo findByMembershipId(Long membershipId);

    /**
     * 根据成员ID集合查询header
     *
     * @param membershipIdList 成员ID集合
     * @return 结果集
     */
    List<EuropeAcademyHeaderPo> findByMembershipIdList(List<Long> membershipIdList);

    /**
     * 根据分页信息获取header数据
     *
     * @param page 分页信息
     * @return 结果集
     */
    List<EuropeAcademyHeaderPo> findEuropeAcademyHeaderPage(Page<EuropeAcademyHeaderPo> page);

    /**
     * 根据成员ID集合查询header
     *
     * @param easyexcelWriteDto 导出excel必要信息
     * @param membershipIdList  成员ID集合
     * @return 回调
     */
    BetriceResultVo<Void> doExportExcelByMembershipIdList(EasyexcelWriteDto easyexcelWriteDto, List<Long> membershipIdList);

    /**
     * 全打印
     *
     * @param easyexcelWriteDto 导出excel必要信息
     * @return 回调
     */
    BetriceResultVo<Void> doExportExcelAll(EasyexcelWriteDto easyexcelWriteDto);

    /**
     * 查询所有成员的头像URL
     *
     * @return 结果集
     */
    List<FindAllAvatarEntity> findAllMembershipAvatar();

    /**
     * 下载所有成员的头像图片
     *
     * @param entity 头像URL
     * @return 形式回调
     */
    CompletableFuture<Boolean> downloadAllMembershipAvatar(FindAllAvatarEntity entity);
}
